package admin

import (
	"gitee.com/gopher2011/gin"
	"gitee.com/gopher2011/mall/app/dao"
	"gitee.com/gopher2011/mall/app/service"
	"net/http"
	"strconv"
)

// umsResourceApi 管理对象。
var UmsResource = &umsResourceApi{}

type umsResourceApi struct{}

// 添加后台资源 /create Post 参数: dao.UmsResource
func (it *umsResourceApi) Create(r *gin.Context) {
	var p dao.UmsResource
	err := r.Parse(&p)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.UmsResource.Create(&p)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "添加后台资源失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "添加后台资源成功!", "data": res})
	}
}

// 修改后台资源 /update/:id Post 参数是:id,dao.UmsResource
func (it *umsResourceApi) Update(r *gin.Context) {
	str := r.Param("id")
	id, _ := strconv.Atoi(str)
	var p dao.UmsResource
	r.Parse(&p)
	res, err := service.UmsResource.Update(int64(id), &p)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "修改后台资源失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "修改后台资源成功!", "data": res})
	}
}

// 根据ID获取资源详情 /:id Get
func (it *umsResourceApi) GetItem(r *gin.Context) {
	str := r.Param("id")
	id, _ := strconv.Atoi(str)
	res, err := service.UmsResource.GetItem(int64(id))
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "获取资源详情失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "获取资源详情成功!", "data": res})
	}
}

// 根据ID删除后台资源 /delete/:id Post
func (it *umsResourceApi) Delete(r *gin.Context) {
	str := r.Param("id")
	id, _ := strconv.Atoi(str)
	res, err := service.UmsResource.Delete(int64(id))
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "根据ID删除后台资源失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "根据ID删除后台资源成功!", "data": res})
	}
}

// 分页模糊查询后台资源 /list Get
func (it *umsResourceApi) List(r *gin.Context) {
	var p dao.UmsResourceList
	r.Parse(&p)
	res, err := service.UmsResource.List(&p)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "分页模糊查询后台资源失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "分页模糊查询后台资源成功!", "data": res})
	}
}

// 查询所有后台资源 /listAll Get
func (it *umsResourceApi) ListAll(r *gin.Context) {
	all, err := service.UmsResource.ListAll()
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "查询所有后台资源失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "查询所有后台资源成功!", "data": all})
	}
}
